<?php
include_once PATH_MODELS.'content'.SUFFIX;
include_once PATH_MODELS.'category'.SUFFIX;
include_once PATH_INCLUDES.'validation'.DS."validation.php";
class adminManagerContentController{
	var $action = null;
	var $param = null;
	var $page = 1;
	var $arr_page = null;
	var $msg = null;
	var $param_url = null;
	var $rs_cat = null;

	function __construct(){
		check_login();
		global $tpl,$routing,$rs,$category,$validate;
		$validate = new Validate();
		$rs = new contentModel();
		$category = new categoryModel();
		$this->param_url = $routing->getParam();
		$tpl->assign('rs_cat',$category->get_all_categories());
	}

	/**
	 * Gọi măc định hiển thị grid dữ liệu
	 */
	function display(){
		global $tpl,$rs;
		$this->page = 1;
		$this->get_result();
		$tpl->assign('title','Quản lý nội dung');
		$tpl->assign('rs',$rs->get_all($this->param));
		$tpl->assign('param',$this->param);
		$tpl->assign('arr_page',$this->arr_page);
		$tpl->assign('admin_center', 'admin/content/default');
		$tpl->display('layout'.DS.'admin'.DS.'layout_admin.tpl');
	}

	/**
	 * Lấy mảng bài viết
	 */
	function get_result(){
		global $rs;
		$this->arr_page = $this->pagination($rs->total_rows(), LIMIT, $this->page);
		if(isset($_POST['clear'])){
			unset($_POST);
		}
		$this->param['cb_id']  	  = isset($_POST['cb-id']) ? $_POST['cb-id'] : -1;
		$this->param['cb_status'] = isset($_POST['cb-status']) ? $_POST['cb-status'] : -1;
		$this->param['cb_hit']    = isset($_POST['cb-hit']) ? $_POST['cb-hit'] : -1;
		$this->param['cb_cat_id'] = isset($_POST['cb-cat-id']) ? $_POST['cb-cat-id'] : -1;
		$this->param['search']    = isset($_POST['search']) ? $_POST['search'] : null;
		$this->param['limit'] 	  = LIMIT;
		$this->param['offset'] 	  = $this->arr_page['offset'];
		$this->param['field'] 	  = "*";
	}


	/**
	 * Tính toán phân trang
	 * @param int $total_rows
	 * @param int $rows_per_page
	 * @param int $page_num
	 * @return array
	 */
	function pagination($total_rows, $rows_per_page, $page_num){
		include_once PATH_INCLUDES.'pagination'.DS.'php-pagination-class'.SUFFIX;
		$pagination = new pagination();
		return $pagination->calculate_pages($total_rows, $rows_per_page, $page_num);
	}

	/**
	 * Chuyển trang
	 */
	function ajax_fect_page(){
		global $tpl,$rs;
		$page = explode('-', $this->param_url[3]);
		$this->page = $page[1];
		$this->get_result();
		$tpl->assign('rs',$rs->get_all($this->param));
		$tpl->assign('arr_page',$this->arr_page);
		echo $tpl->fetch('admin'.DS.'content'.DS.'grid.tpl');
	}

	/**
	 * Xóa một bài viết
	 */
	function ajax_del_item(){
		global $tpl,$rs;
		$page = explode('-', $this->param_url[3]);
		$this->page = $page[1];
		$this->get_result();
		$id = isset($this->param_url[4]) ? $this->param_url[4] : false;
		if($id){
			$rs->content_id = $id;
			if($rs->delete()){
				$this->msg = array('type'=>'success','show'=>'Xóa thành công');
			}else{
				$this->msg = array('type'=>'error','show'=>'Lỗi không xóa được');
			}
		}else{
			$this->msg = array('type'=>'error','show'=>'Lỗi tham số khi xóa');
		}
		$tpl->assign('msg',$this->msg);
		$tpl->assign('rs',$rs->get_all($this->param));
		$tpl->assign('arr_page',$this->arr_page);
		echo $tpl->fetch('admin'.DS.'content'.DS.'grid.tpl');
	}

	/**
	 * Xóa các bài viết được check
	 */
	function ajax_del_all(){
		global $tpl,$rs;
		$page = explode('-', $this->param_url[3]);
		$this->page = $page[1];
		$this->get_result();
		$id = isset($this->param_url[4]) ? $this->param_url[4] : false;
		if($id){
			$arr_id = explode(',', $id);
			if($rs->delete_all($arr_id)){
				$this->msg = array('type'=>'success','show'=>'Xóa thành công');
			}else{
				$this->msg = array('type'=>'error','show'=>'Lỗi không xóa được');
			}
		}else{
			$this->msg = array('type'=>'error','show'=>'Lỗi tham số khi xóa');
		}
		$tpl->assign('msg',$this->msg);
		$tpl->assign('rs',$rs->get_all($this->param));
		$tpl->assign('arr_page',$this->arr_page);
		echo $tpl->fetch('admin'.DS.'content'.DS.'grid.tpl');
	}

	/**
	 * Thay đổi trạng thái một bài viết
	 */
	function ajax_change_status_item(){
		global $tpl,$rs;
		$page = explode('-', $this->param_url[3]);
		$this->page = $page[1];
		$this->get_result();
		$id = isset($this->param_url[4]) ? $this->param_url[4] : false;
		$status = isset($this->param_url[5]) ? $this->param_url[5] : false;
		if($id){
			if($rs->change_status($status,$id)){
				$this->msg = array('type'=>'success','show'=>'Đổi trạng thái thành công');
			}else{
				$this->msg = array('type'=>'error','show'=>'Lỗi không thay đổi được trạng thái');
			}
		}else{
			$this->msg = array('type'=>'error','show'=>'Lỗi không thay đổi được trạng thái');
		}
		$tpl->assign('msg',$this->msg);
		$tpl->assign('rs',$rs->get_all($this->param));
		$tpl->assign('arr_page',$this->arr_page);
		echo $tpl->fetch('admin'.DS.'content'.DS.'grid.tpl');
	}

	/**
	 * Thay đổi trạng thái nhiều bài viết
	 */
	function ajax_change_status_all(){
		global $tpl,$rs;
		$page = explode('-', $this->param_url[3]);
		$this->page = $page[1];
		$this->get_result();
		$id = isset($this->param_url[4]) ? $this->param_url[4] : false;
		$status = isset($this->param_url[5]) ? $this->param_url[5] : false;
		if($id){
			$arr_id = explode(',', $id);
			if($rs->change_status_all($status,$arr_id)){
				$this->msg = array('type'=>'success','show'=>'Đổi trạng thái thành công');
			}else{
				$this->msg = array('type'=>'error','show'=>'Lỗi không thay đổi được trạng thái');
			}
		}else{
			$this->msg = array('type'=>'error','show'=>'Lỗi không thay đổi được trạng thái');
		}
		$tpl->assign('msg',$this->msg);
		$tpl->assign('rs',$rs->get_all($this->param));
		$tpl->assign('arr_page',$this->arr_page);
		echo $tpl->fetch('admin'.DS.'content'.DS.'grid.tpl');
	}

	/**
	 * Sửa bài viết
	 */
	function ajax_edit_item(){
		global $tpl,$rs;
		$id = isset($this->param_url[3]) ? $this->param_url[3] : false;
		$page = isset($this->param_url[4]) ? $this->param_url[4] : false;
		$rs->content_id = $id;
		$rs->read();
		$tpl->assign('rs', $rs);
		$tpl->assign('page', $page);
		$tpl->assign('admin_center', 'admin'.DS.'content'.DS.'edit');
		$tpl->display('layout'.DS.'admin'.DS.'layout_static.tpl');
	}

	/**
	 * Tạo bài viết
	 */
	function ajax_add_new_item(){
		global $tpl,$rs;
		$tpl->assign('admin_center', 'admin'.DS.'content'.DS.'edit');
		$tpl->display('layout'.DS.'admin'.DS.'layout_static.tpl');
	}

	/*function ajax_save_add(){
		global $tpl,$rs,$validate;
		$msg = null;
		$isError = false;
		$id 	     = isset($_POST['id']) ? $_POST['id'] : 0;
		$title 	     = isset($_POST['title']) ? $_POST['title'] : null;
		$introtext   = isset($_POST['introtext']) ? $_POST['introtext'] : null;
		$fulltext    = isset($_POST['fulltext']) ? $_POST['fulltext'] : null;
		$cat_id      = isset($_POST['cat_id']) ? $_POST['cat_id'] : 1;
		$status      = isset($_POST['status']) ? $_POST['status'] : 0;
		$alias       = isset($_POST['alias']) ? $_POST['alias'] : null;
		$keyword     = isset($_POST['keyword']) ? $_POST['keyword'] : null;
		$description = isset($_POST['description']) ? $_POST['description'] : null;

		if(!$id){
			if($rs->check_alias_exit($alias)){
				$isError = true;
				$msg[] = 'Alias đã tồn tại, bạn hãy đổi alias khác hoặc thêm hâu tố';
			}
		}

		if(!$validate->checkLength($title, 255, 10)){
			$isError = true;
			$msg[] = 'Bạn chưa nhập tiêu đề hoặc tiêu đề quá ngắn';
		}

		if(!$validate->checkLength($alias, 255, 10)){
			$isError = true;
			$msg[] = 'Bạn chưa nhập alias hoặc alias quá ngắn';
		}

		if(!$validate->checkLength($fulltext, 100000, 50)){
			$isError = true;
			$msg[] = 'Bạn chưa nhập nội dung đầy đủ hoặc nội dung  đầy đủ quá ngắn';
		}


		$rs->content_id = $id;
		$rs->title = $title;
		$rs->introtext = $introtext;
		$rs->fulltext = $fulltext;
		$rs->cat_id = $cat_id;
		$rs->status = $status;
		$rs->alias = $alias;
		$rs->keyword = $keyword;
		$rs->description = $description;

		if(!$isError){
			$rs->store();
			if(!$id){
				$rs->content_id = $rs->last_insert_id();
				$rs->read();
			}
		}
		$tpl->assign('isError', $isError);
		$tpl->assign('msg', $msg);
		$tpl->assign('rs', $rs);
		$tpl->assign('admin_center', 'admin'.DS.'content'.DS.'edit');
		$tpl->display('layout'.DS.'admin'.DS.'layout_static.tpl');
	}*/
	
	function ajax_save(){
		global $tpl,$rs,$validate;
		$msg = null;
		$isError = false;
		$id 	     = isset($_POST['id']) ? $_POST['id'] : 0;
		$title 	     = isset($_POST['title']) ? $_POST['title'] : null;
		$introtext   = isset($_POST['introtext']) ? $_POST['introtext'] : null;
		$fulltext    = isset($_POST['fulltext']) ? $_POST['fulltext'] : null;
		$cat_id      = isset($_POST['cat_id']) ? $_POST['cat_id'] : 1;
		$status      = isset($_POST['status']) ? $_POST['status'] : 0;
		$alias       = isset($_POST['alias']) ? $_POST['alias'] : null;
		$keyword     = isset($_POST['keyword']) ? $_POST['keyword'] : null;
		$description = isset($_POST['description']) ? $_POST['description'] : null;
		
		if($id == 0){
			if($rs->check_alias_exit($alias)){
				$isError = true;
				$msg[] = 'Alias đã tồn tại, bạn hãy đổi alias khác hoặc thêm hâu tố';
			}
		}

		if(!$validate->checkLength($title, 255, 10)){
			$isError = true;
			$msg[] = 'Bạn chưa nhập tiêu đề hoặc tiêu đề quá ngắn';
		}

		if(!$validate->checkLength($alias, 255, 10)){
			$isError = true;
			$msg[] = 'Bạn chưa nhập alias hoặc alias quá ngắn';
		}

		if(!$validate->checkLength($fulltext, 100000, 50)){
			$isError = true;
			$msg[] = 'Bạn chưa nhập nội dung đầy đủ hoặc nội dung  đầy đủ quá ngắn';
		}

		if(!$isError){
			$rs->content_id = $id;
			$rs->title = $title;
			$rs->introtext = $introtext;
			$rs->fulltext = $fulltext;
			$rs->cat_id = $cat_id;
			$rs->status = $status;
			$rs->keyword = $keyword;
			$rs->description = $description;
			$rs->store();
			$isError = false;
			$msg[] = 'Lưu thành công';
			echo json_encode(array('error'=>$isError,'msg'=>$msg));
			exit;
		}
		echo json_encode(array('error'=>$isError,'msg'=>$msg));
		exit;
	}
}